import pandas as pd
from ListUtils import anti_join
from DatetimeUtils import choose_day
import time


"""
股票质押明细数据
"""



def deal_append(ts_code, engine, pro):
    """
    通过anti_join函数处理增量数据
    """
    source_list_ = pro.pledge_detail(ts_code=ts_code)
    if len(source_list_) > 0:
        sql_ = 'select s.* from pledge_detail s WHERE s.ts_code = "' + ts_code + '"'
        target_list_ = pd.read_sql(sql_, engine)

        if len(target_list_) == 0:
            # 数据库内未找到数据则全部添加
            source_list_.to_sql('pledge_detail', con=engine, index=False, if_exists='append')
            print('数据库内未找到数据则全部添加：(%s)' % source_list_)

        else:
            if not len(target_list_) == len(source_list_):
                pd.read_sql_query('delete from pledge_detail WHERE ts_code = "' + ts_code + '"', con=engine, chunksize=1000)
                source_list_.to_sql('pledge_detail', con=engine, index=False, if_exists='append')
                print('数据库内未找到数据则全部添加：(%s)' % source_list_)
    time.sleep(2)





def save_history_data_pledge_detail(engine, pro):
    """
    保存历史数据，通过对比添加数据
    """
    # 股票列表
    sql = 'select s.ts_code from stock s'
    stock_list = pd.read_sql(sql, engine)
    if len(stock_list) > 0:
        for i in range(0, len(stock_list)):
            ts_code = stock_list.loc[i].ts_code
            deal_append(ts_code, engine, pro)


def save_single_data_pledge_detail(ts_code, engine, pro):
    """
    保存单支Ts数据，通过对比添加数据
    """
    # 股票列表
    deal_append(ts_code, engine, pro)



